/**
 使用多线程编码实现：火车站卖票实例，四个卖票窗口随机卖出50张票(static成员tickers)
 注意:
 不能卖出重复的票，
 不要卖出 编号为负值的票
 每个窗口出票后 随机休眠时间范围在[100,200]ms。
 */
public class Test4 {
    // 静态变量表示总票数
    private static int tickets = 50;

    public static void main(String[] args) {
        // 创建四个售票窗口
        for (int i = 1; i <= 4; i++) {
            new Thread(() -> {
                while (true) {
                    synchronized (Test4.class) {
                        if (tickets <= 0) {
                            break;
                        }
                        // 卖出一张票
                        System.out.println(Thread.currentThread().getName() + " 卖出票号: " + tickets);
                        tickets--;
                    }

                    // 随机休眠100-200ms
                    try {
                        Thread.sleep(100 + (int)(Math.random() * 101));
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                System.out.println(Thread.currentThread().getName() + " 售票结束");
            }, "窗口" + i).start();
        }
    }
}
